# Generated Cmake Pico project file

cmake_minimum_required(VERSION 3.13)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# Initialise pico_sdk from installed location
# (note this can come from environment, CMake cache etc)

# == DO NEVER EDIT THE NEXT LINES for Raspberry Pi Pico VS Code Extension to work ==
if(WIN32)
    set(USERHOME $ENV{USERPROFILE})
else()
    set(USERHOME $ENV{HOME})
endif()
set(sdkVersion 2.0.0)
set(toolchainVersion 13_2_Rel1)
set(picotoolVersion 2.0.0)
set(picoVscode ${USERHOME}/.pico-sdk/cmake/pico-vscode.cmake)
if (EXISTS ${picoVscode})
    include(${picoVscode})
endif()
# ====================================================================================
set(PICO_BOARD pico CACHE STRING "Board type")

# Pull in Raspberry Pi Pico SDK (must be before project)
include(pico_sdk_import.cmake)

project(blink C CXX ASM)

# Initialise the Raspberry Pi Pico SDK
pico_sdk_init()

# Tobudos dir
set(TOP_DIR ${CMAKE_SOURCE_DIR}/../..)
# 
set(ARCH_SRC "")
file(GLOB ARCH_SOURCES ${TOP_DIR}/arch/arm/arm-v7m/cortex-m0+/gcc/*.c)
list(APPEND ARCH_SRC ${ARCH_SOURCES})
file(GLOB ARCH_SOURCES ${TOP_DIR}/arch/arm/arm-v7m/common/*.c)
list(APPEND ARCH_SRC ${ARCH_SOURCES})

file(GLOB KERNEL_SRC ${TOP_DIR}/kernel/core/*.c)

set(CMSIS_SRC ${TOP_DIR}/osal/cmsis_os/cmsis_os.c)

set(ASM_SOURCES_S ${TOP_DIR}/arch/arm/arm-v7m/cortex-m0+/gcc/port_s.S)

file(GLOB TEST_SOURCES ${CMAKE_SOURCE_DIR}/test/*.c)

include_directories(
    ${TOP_DIR}/kernel/core/include
    ${TOP_DIR}/kernel/pm/include
    ${TOP_DIR}/arch/arm/arm-v7m/common/include
    ${TOP_DIR}/arch/arm/arm-v7m/cortex-m0+/gcc/
    ${TOP_DIR}/osal/cmsis_os

    ${CMAKE_SOURCE_DIR}/TOS_CONFIG
    ${CMAKE_SOURCE_DIR}/test/include
    )

# Add executable. Default name is the project name, version 0.1

add_executable(blink test.c
    ${ARCH_SRC} ${KERNEL_SRC} ${CMSIS_SRC} ${ASM_SOURCES_S} ${TEST_SOURCES}
    )

# add definition to enable cmsis rename
add_compile_definitions(PICO_CMSIS_RENAME_EXCEPTIONS=1)
# pull in common dependencies
target_link_libraries(blink pico_stdlib pico_multicore cmsis_core)

if (PICO_CYW43_SUPPORTED)
    target_link_libraries(blink pico_cyw43_arch_none)
endif()

# create map/bin/hex file etc.
pico_add_extra_outputs(blink)

# add url via pico_set_program_url